<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

/*function mg(name,age){
	alert("name="+name+",age="+age);
}

mg("张三",34);*/
/*var dog=[];
dog.info=function (name,age){//匿名函数
	alert("name="+name+",age="+age);
}

dog.info("张三",34);*/

/*var fn=new Function('name,age',"alert(name+age)");//使用Function类创建匿名函数

fn("李四",34);*/

/*var i=0;

function add(n){
	i+=n;
}

function get(){
	return i;
}
add(8);
add(8);
add(8);

alert(get());*/

/*function outer(){

	function inner1(){
		alert("局部函数1")
	}

	function inner2(){
		alert("局部函数2")
	}

	inner1();
	inner2();

	alert("外部方法被调用");
}

outer();*/
//inner1();内部方法只能在outer的方法里调用执行

/*var person=function(name,age){//构建一个类及其属性及其方法
	this.name=name;
	this.age=age;
	var i=0;
	person.total=0;
	
	person.total=person.total+age;//total为静态变量，也叫做类的变量
	
	this.info=function(){
		return this.name+"/"+this.age;
	}

	this.getName=function(){
		return this.name;
	}

	this.setName=function(name){
		this.name=name;
	}
	
	return this;
}

var p=new person("李四",34);
alert(p.info());

p.setName("张三");

alert(p.name);

var p=new person("王五",32);

alert(person.total);*/


//调用函数有三种方式,1、直接调用，2、通过call方法调用,3、通过apply方法调用
//call(调用者,参数1，参数2,.....),需要调用者逐一的传入参数
//apply(调用者,参数),以arguments一次性地传入多个参数
/*var each=function(array,fn){
	for(var index in array){
		fn.call(null,index,array[index]);
	}
}
var arr=[1,2,3,4,5];
each(arr,function(index,ele){
	document.write("第"+index+"个元素:"+ele+"<br>");
});*/

/*var myfun=function(a,b){
	alert("a的值是："+a+",b的值是："+b);
}
//myfun.call(window,1,2);//2、通过call方法调用

//myfun.apply(window,[1,2]);//3、通过apply方法调用

var example=function(name,age){
	myfun.apply(this,arguments);//arguments代表example的调用者传入进来的所有参数
}

example("张三",34);*/

//对象的创建两方式
/*var p={};//var p=new Object();
p.age=30;
p.name="张三";
p.info=function(){
	alert(this.name+"/"+this.age);
}

for(pName in p){
	alert(pName+"---"+p[pName]);
}*/

/*function Person(){
	var localVal=0;//变量
	
	this.name="张三";//属性
	this.age=26;//属性
	
	this.info=function(){//方法
		return localVal;
	}
}

var p=new Person();
var lv=p.info();

alert(lv);

Person.prototype.walk=function(){
	alert("走起路来，慢慢悠悠");
}

p.walk();

var p2=new Person();

p2.walk();*/

//json对象，以{开始，以}结尾，属性名与属性值之间用:隔开，如果有多个属性以逗号隔开
var p={
		name:'张三',
		age:34,
		children:[{
			name:'dongdong',
			age:1,
			sex:'男'
		},
		{
			name:'lili',
			age:3,
			sex:'女'
		}
		],
		info:function(){
			document.write(this.name+"/"+this.age+"<br>");

			for(index in this.children){
				document.write(this.children[index].name+"---"+this.children[index].age+"<br>");
			}
		}
	  };

p.info();
//alert(p.info());
</script>
</head>
<body>

<script type="text/javascript">


</script>
</body>
</html>